home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / CIncludes / FileTransfers.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  5.9 KB  |  209 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Wednesday, September 11, 1991 at 6:06 PM
  5.  FileTransfers.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1988-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __FILETRANSFERS__
  16. #define __FILETRANSFERS__
  17.  
  18. #ifndef __PACKAGES__
  19. #include <Packages.h>
  20. #endif
  21.  
  22. #ifndef __CTBUTILITIES__
  23. #include <CTBUtilities.h>
  24. #endif
  25.  
  26. #ifndef __CONNECTIONS__
  27. #include <Connections.h>
  28. #endif
  29.  
  30. #ifndef __FILES__
  31. #include <Files.h>
  32. #endif
  33.  
  34.  
  35. enum {
  36.  
  37.  
  38. /* current file transfer manager version */
  39.  curFTVersion = 2,
  40.  
  41. /* FTErr    */
  42.  ftGenericError = -1,
  43.  ftNoErr = 0,
  44.  ftRejected = 1,
  45.  ftFailed = 2,
  46.  ftTimeOut = 3,
  47.  ftTooManyRetry = 4,
  48.  ftNotEnoughDSpace = 5,
  49.  ftRemoteCancel = 6,
  50.  ftWrongFormat = 7,
  51.  ftNoTools = 8,
  52.  ftUserCancel = 9,
  53.  ftNotSupported = 10
  54. };
  55.  
  56. typedef OSErr FTErr;
  57.  
  58. enum {ftIsFTMode = 1 << 0,ftNoMenus = 1 << 1,ftQuiet = 1 << 2,ftConfigChanged = 1 << 4,
  59.  ftSucc = 1 << 7};
  60. typedef unsigned long FTFlags;
  61.  
  62. enum {ftSameCircuit = 1 << 0,ftSendDisable = 1 << 1,ftReceiveDisable = 1 << 2,
  63.  ftTextOnly = 1 << 3,ftNoStdFile = 1 << 4,ftMultipleFileSend = 1 << 5};
  64. typedef unsigned short FTAttributes;
  65.  
  66. enum {ftReceiving,ftTransmitting};
  67. typedef unsigned short FTDirection;
  68.  
  69.  
  70. struct FTRecord {
  71.  short procID;
  72.  FTFlags flags;
  73.  FTErr errCode;
  74.  long refCon;
  75.  long userData;
  76.  ProcPtr defProc;
  77.  Ptr config;
  78.  Ptr oldConfig;
  79.  ProcPtr environsProc;
  80.  long reserved1;
  81.  long reserved2;
  82.  Ptr ftPrivate;
  83.  ProcPtr sendProc;
  84.  ProcPtr recvProc;
  85.  ProcPtr writeProc;
  86.  ProcPtr readProc;
  87.  WindowPtr owner;
  88.  FTDirection direction;
  89.  SFReply theReply;
  90.  long writePtr;
  91.  long readPtr;
  92.  char *theBuf;
  93.  long bufSize;
  94.  Str255 autoRec;
  95.  FTAttributes attributes;
  96. };
  97.  
  98. typedef struct FTRecord FTRecord;
  99. typedef FTRecord *FTPtr, **FTHandle;
  100.  
  101.  
  102. enum {
  103.  
  104.  
  105. /* FTReadProc messages */
  106.  ftReadOpenFile = 0,    /* count = forkFlags, buffer = pblock from PBGetFInfo */
  107.  ftReadDataFork = 1,
  108.  ftReadRsrcFork = 2,
  109.  ftReadAbort = 3,
  110.  ftReadComplete = 4,
  111.  ftReadSetFPos = 6,        /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  112.  ftReadGetFPos = 7,        /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  113.  
  114. /* FTWriteProc messages */
  115.  ftWriteOpenFile = 0,    /* count = forkFlags, buffer = pblock from PBGetFInfo */
  116.  ftWriteDataFork = 1,
  117.  ftWriteRsrcFork = 2,
  118.  ftWriteAbort = 3,
  119.  ftWriteComplete = 4,
  120.  ftWriteFileInfo = 5,
  121.  ftWriteSetFPos = 6,    /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  122.  ftWriteGetFPos = 7,    /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  123.  
  124. /* fork flags */
  125.  ftOpenDataFork = 1,
  126.  ftOpenRsrcFork = 2
  127.  
  128. };
  129.  
  130. /* application routines type definitions */
  131. typedef pascal OSErr (*FileTransferReadProcPtr) (unsigned long *count, Ptr pData, long refCon, short fileMsg);
  132. typedef pascal OSErr (*FileTransferWriteProcPtr) (unsigned long *count, Ptr pData, long refCon, short fileMsg);
  133.  
  134. typedef pascal Size (*FileTransferSendProcPtr) (Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag);
  135. typedef pascal Size (*FileTransferReceiveProcPtr) (Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags *flag);
  136.  
  137. typedef pascal OSErr (*FileTransferEnvironsProcPtr) (long refCon, ConnEnvironRec *theEnvirons);
  138.  
  139. typedef pascal void  (*FileTransferNotificationProcPtr) (FTHandle hFT, FSSpecPtr pFSSpec);
  140. typedef pascal void  (*FileTransferChooseIdleProcPtr) (void);
  141.  
  142. #ifdef __cplusplus
  143. extern "C" {
  144. #endif
  145. pascal FTErr InitFT(void); 
  146. pascal Handle FTGetVersion(FTHandle hFT); 
  147. pascal short FTGetFTVersion(void); 
  148.  
  149. pascal FTHandle FTNew(short procID,FTFlags flags,FileTransferSendProcPtr sendProc,
  150.  FileTransferReceiveProcPtr recvProc,FileTransferReadProcPtr readProc,FileTransferWriteProcPtr writeProc,
  151.  FileTransferEnvironsProcPtr environsProc,WindowPtr owner,long refCon,long userData); 
  152.  
  153. pascal void FTDispose(FTHandle hFT); 
  154.  
  155. pascal FTErr FTStart(FTHandle hFT,FTDirection direction,const SFReply *fileInfo); 
  156. pascal FTErr FTAbort(FTHandle hFT); 
  157.  
  158. pascal FTErr FTSend(FTHandle hFT,short numFiles,FSSpecArrayPtr pFSSpec,
  159.  FileTransferNotificationProcPtr notifyProc); 
  160. pascal FTErr FTReceive(FTHandle hFT,FSSpecPtr pFSSpec,FileTransferNotificationProcPtr notifyProc); 
  161.  
  162. pascal void FTExec(FTHandle hFT); 
  163.  
  164. pascal void FTActivate(FTHandle hFT,Boolean activate); 
  165. pascal void FTResume(FTHandle hFT,Boolean resume); 
  166. pascal Boolean FTMenu(FTHandle hFT,short menuID,short item); 
  167.  
  168. pascal short FTChoose(FTHandle *hFT,Point where,FileTransferChooseIdleProcPtr idleProc); 
  169. pascal void FTEvent(FTHandle hFT,const EventRecord *theEvent); 
  170.  
  171. pascal Boolean FTValidate(FTHandle hFT); 
  172. pascal void FTDefault(Ptr *theConfig,short procID,Boolean allocate); 
  173.  
  174. pascal Handle FTSetupPreflight(short procID,long *magicCookie); 
  175. pascal void FTSetupSetup(short procID,const void *theConfig,short count,
  176.  DialogPtr theDialog,long *magicCookie); 
  177. pascal Boolean FTSetupFilter(short procID,const void *theConfig,short count,
  178.  DialogPtr theDialog,EventRecord *theEvent,short *theItem,long *magicCookie); 
  179. pascal void FTSetupItem(short procID,const void *theConfig,short count,
  180.  DialogPtr theDialog,short *theItem,long *magicCookie); 
  181. pascal void FTSetupXCleanup(short procID,const void *theConfig,short count,
  182.  DialogPtr theDialog,Boolean OKed,long *magicCookie); 
  183.  
  184. pascal void FTSetupPostflight(short procID); 
  185.  
  186. pascal Ptr FTGetConfig(FTHandle hFT); 
  187. pascal short FTSetConfig(FTHandle hFT,const void *thePtr); 
  188.  
  189. pascal OSErr FTIntlToEnglish(FTHandle hFT,const void *inputPtr,Ptr *outputPtr,
  190.  short language); 
  191. pascal OSErr FTEnglishToIntl(FTHandle hFT,const void *inputPtr,Ptr *outputPtr,
  192.  short language); 
  193.  
  194. pascal void FTGetToolName(short procID,Str255 name); 
  195. pascal short FTGetProcID(ConstStr255Param name); 
  196.  
  197. pascal void FTSetRefCon(FTHandle hFT,long refCon); 
  198. pascal long FTGetRefCon(FTHandle hFT); 
  199.  
  200. pascal void FTSetUserData(FTHandle hFT,long userData); 
  201. pascal long FTGetUserData(FTHandle hFT); 
  202.  
  203. pascal void FTGetErrorString(FTHandle hFT,short id,Str255 errMsg); 
  204. #ifdef __cplusplus
  205. }
  206. #endif
  207.  
  208. #endif
  209.